Multi-boot computers allow a single computer to run more than one operating system (OS). When a multi-boot computer is started, a boot menu prompts the user of the computer to select which of the available operating systems the user would like to run on the computer. Then a boot manager loads the selected OS, and the selected OS is run on the computer, until the computer is rebooted or the OS is otherwise ended.
Multi-boot computers are useful for users who would like to have more than one OS on their computer. For example, a user might wish to have both an open source OS, such as Linux®, installed on his system, as well as a closed source or proprietary OS, like Microsoft® Windows®. (Linux is a registered trademark to Linus Torvalds. Microsoft and Windows are registered trademarks to Microsoft Corporation in the United States and/or other countries.) Another user might be interested in supporting multiple versions of the same OS.
Multi-boot computers use a boot loader to launch a selected OS on startup. There are both open source and proprietary boot loaders. Examples of current open source boot loaders include Linux GRUB (GRand Unified Bootloader) and LILO (The LInux LOader). Microsoft offers the Microsoft Windows Boot Loader, a proprietary boot loader.
Although multi-boot computers allow more than one OS to be run on a computer, only one OS can be run on the computer at a time. This means that a user logged into one OS wishing to switch to another OS must exit the first OS and reboot the computer in order to use the second OS. As the computer is started up, the selected OS initializes the computer according the configuration of the OS. Then, in shutting down the computer, the resources are freed and the user is able to select and use a different OS when starting up the computer again.
Another disadvantage with multi-boot computers is that adding additional boot images requires oversight to ensure that one OS installation does not interfere with another OS installation. For example, each OS must have adequate hard disk space in order to fully operate on the computer. Each OS is configured to use resources on the partition of the computer associated with the OS. While some potential conflicts might be readily recognized by the user adding an OS, other conflicts might be less apparent.
Development of virtual machines (VMs) has enabled more than one OS to be run on a computer at the same time: in other words, the multiple operating systems can be run in parallel. A VM consists of a hosting OS and VM instances representing operating systems to run on the computer. The hosting OS loads the appropriate VM instances. Each VM instance is essentially an emulation of the OS it represents, appearing to the user as if the OS were running directly on the computer.
A VM has as an advantage over a multi-boot computer in that it might be possible to run multiple VM instances at the same time. Instead of having to reboot the computer to switch between operating systems, a user need only access an interface in a VM manager. By running VMs, a user can run applications designed for multiple operating systems at the same time. But the advantage of being able to run more than one VM instance in parallel is offset by a performance hit in running the hosting OS and running the target operating systems as virtual machines.
As a VM instance is installed on a computer, the VM instance is configured to access installed hardware, to use partitions of a hard drive, and to use optional features of the VM instance. Care needs to be taken to ensure that the configuration of a new VM instance does not interfere with a previously installed VM instance. Just as additional boot images on a multi-boot computer can introduce possible conflicts, adding VM instances can also introduce conflicts.
A user interested in switching from a multi-boot computer to a VM, must manually configure each VM instance in order for the VM instances to operate similarly to the existing boot images. In doing this, conflicts that did not exist as boot images might be introduced in installing the virtual machine instances. For example, if two boot images are configured to use static internet protocol (IP) addresses, there is no conflict because only one boot image is running at any given time. However, if two VM instances are set up with static IP addresses, and the two VM instances are running at the same time, then it is unclear which of the two VM instances should receive data being routed to the computer.
Accordingly, a need remains for a way to convert a multi-boot computer system into a virtual machine, converting previous configurations of the boot images to configurations for VM instances, and detecting and resolving conflicts between the converted VM instances, to address these and other problems associated with the prior art.